package com.bruce.asurada.sso.service;

import com.bruce.asurada.common.dto.PhoneCodeLoginDTO;
import com.bruce.asurada.common.dto.TokenDTO;
import com.bruce.asurada.common.dto.UserInfoDto;
import com.bruce.asurada.common.dto.UserLoginDto;


public interface SsoService {

    /**
     * 生成用户授权码
     * @param loginDto
     * @return
     * @throws Exception
     */
    String generateAuthCode(UserLoginDto loginDto) throws Exception;


    /**
     * 用手机号+验证码登录
     */
    TokenDTO loginByPhoneAndCode(PhoneCodeLoginDTO loginDto)throws Exception;

    /**
     * 生成令牌信息
     * @param loginDto
     * @return
     */
    TokenDTO generateTokens(UserLoginDto loginDto) throws Exception;


    /**
     * 检查token
     * @param token
     * @return
     * @throws Exception
     */
    boolean checkToken(String token) throws Exception;


    /**
     * 验证令牌
     */
    UserInfoDto validateToken(String token) throws Exception;

    /**
     * 验证IM会话令牌
     */
    UserInfoDto validateImSessionToken(String imSessionToken)throws Exception ;


    /**
     * 刷新令牌
     */
    TokenDTO refreshToken(String refreshToken)throws Exception;

    /**
     * 用户登出
     */
    void logout(TokenDTO tokenDTO)throws Exception;
}
